package com.sangeng.service.impl;

import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sangeng.constant.enums.AppHttpCodeEnum;
import com.sangeng.domain.core.ResponseResult;
import com.sangeng.domain.dto.TagDto;
import com.sangeng.domain.vo.BlogTagVo;
import com.sangeng.domain.vo.PageVo;
import com.sangeng.domain.vo.TagVo;
import com.sangeng.utils.BeanUtil;
import org.springframework.stereotype.Service;

import com.sangeng.domain.entity.Tag;
import com.sangeng.mapper.TagMapper;
import com.sangeng.service.TagService;

import java.util.List;

/**
 * 标签(Tag)表服务实现类
 *
 * @author makejava
 * @since 2025-06-24 10:27:15
 */
@Service("tagService")
public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements TagService {

    @Override
    public ResponseResult pageList(TagDto tagDto) {
        Page<Tag> page = new Page<>(tagDto.getPageNum(), tagDto.getPageSize());
        LambdaQueryWrapper<Tag> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(StringUtils.isNotBlank(tagDto.getName()), Tag::getName, tagDto.getName())
                .like(StringUtils.isNotBlank(tagDto.getRemark()), Tag::getRemark, tagDto.getRemark());
        Page<Tag> tagPage = page(page, queryWrapper);
        List<TagVo> tagVos = tagPage.getRecords().stream().map(tag -> BeanUtil.copyBean(tag, TagVo.class)).toList();
        return ResponseResult.okResult(new PageVo(tagVos, tagPage.getTotal()));
    }

    @Override
    public ResponseResult addTag(Tag tag) {
        boolean save = save(tag);
        return save ? ResponseResult.okResult() : ResponseResult.errorResult(AppHttpCodeEnum.INSERT_ERROR);
    }

    @Override
    public ResponseResult listAllTag() {
        List<BlogTagVo> blogTagVos = BeanUtil.copyBeanList(list(), BlogTagVo.class);
        return ResponseResult.okResult(blogTagVos);
    }


}

